package com.example.leetcode.array;

import com.example.leetcode.array.common.ArrayUtils;

public class leetcode3551 {
    public static void main(String[] args) {
        int[] nums = {18, 43, 34, 16};

        Solution solution = new Solution();
        System.out.println(solution.minSwaps(nums));
    }

    static class Solution {
        static class NumInfo {
            public int num;
            public int digitSum;
        }

        public int minSwaps(int[] nums) {

            return ArrayUtils.minSwaps(nums);

//
//            List<NumInfo> numInfos = new ArrayList<>();
//            for (int num : nums) {
//                NumInfo numInfo = new NumInfo();
//                numInfo.num = num;
//                numInfo.digitSum = ArrayUtils.digitSum(num);
//                numInfos.add(numInfo);
//            }
//
//            // 排序
//            numInfos.sort((o1, o2) -> {
//                if (o1.digitSum != o2.digitSum) {
//                    return o1.digitSum - o2.digitSum;
//                } else {
//                    return o1.num - o2.num;
//                }
//            });
//
//            Map<Integer, Integer> map = new HashMap<>();
//            for (int i = 0; i < numInfos.size(); i++) {
//                NumInfo numInfo = numInfos.get(i);
//                map.put(numInfo.num, i);
//            }
//
//            int result = 0;
//            Set<Integer> set = new HashSet<>();
//            for (int i = 0; i < nums.length; i++) {
//                int cycleSize = 0;
//                int index = i;
//
//                while (!set.contains(index)) {
//                    set.add(index);
//                    index = map.get(nums[index]);
//                    cycleSize++;
//                }
//                if (cycleSize > 1) {
//                    result = result + (cycleSize - 1);
//                }
//            }
//            return result;

        }
    }
}
